导航菜单
首页 >  2019上半年软考程序员下午真题六  > 2019上半年软考程序员下午真题(五)

2019上半年软考程序员下午真题(五)

摘要:希赛网软考频道小编为大家整理了2019上半年软考程序员下午真题第五部分,供大家参考。

5、阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡 (CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。图5-1是某支付系统的简略类图。

1.jpg

问题内容:

【Java代码】

Import java.util. ArrayList;

import java.util.List;

interface PaymentMethod {

public      (1)       ;

}

// Cash、DebitCard和Item实现略,Item中getPrice( )获取当前物品对象的价格

abstract class Card       (2)      {

private final String name, num;

public Card(String name, String num) {this.name = name; this.num = num; }

@Oveiride

public String toString ( ) {

return String.format(“%s card[name = %s, num = %s]”,this.getType (), name, num);

}

@Override

public void pay(int cents) {

System.out.println(“Payed " + cents + “ cents using “ + toString( ));

this.executeTransaction(cents);

}

protected abstract String getType( );

protected abstract void executeTransaction(int cents);

}

class CreditCard       (3)      {

public CreditCard(String name, String num) {     (4)       ; }

@Override

protected String getType( ) { return "CREDIT"; }

@Override

protected void executeTransaction(int cents) {

System.out.println(cents + " paid using Credit Card. "’);

}

}

class Bill {//包含所有购买商品的账单

private List items = new ArrayList();

public void add(Item item) { items.add(item); }

public intgetTotalPrice( ){/*计算所有 item 的总价格,代码略*/ }

public void pay(PaymentMethod paymentMethod){//用指定的支付方式完成支付

(5)       (getTotalPrice( ));

}

}

public class PaymentSystem {

public void pay( ) {

Bill bill = new Bill( );

Item item1 = new Item("1234",10); Item item2 = new Item( "5678",40);

bill.add(item1); bill.add(item2); //将物品添加到账单中

bill.pay(new CreditCard("LI SI", "98765432101")); //信用卡支付

}

public static void main(String[ ] args) {

(6)     = new PaymentSystem( );

payment.pay( );

}

}

相关推荐: